package com.chapter17.demo2;


/**
 * 可以看到线程0（即第一个线程）确实获得了较多的执行机会，但这并不代表低优先级的线程就没有执行机会，
 * 只要有空闲的CPU，低优先级的线程一样能同时运行；或者在低优先级线程长时间没有运行的时候，线程调度器也会给予该线程运行的机会。
 * 将一个线程设置为高优先级，并不代表该线程会被立即运行，线程调度器依然会根据当前CPU资源的占用情况决定何时运行该线程，只不过高优先级的线程会获得更多的执行机会罢了。
 * 因此，我们不能借助线程的优先级来实现让某个线程立即运行，也不能借此调整线程间的运行顺序。
 * 在大多数情况下，线程优先级应该被视为一种“方针”，而不是“规则”，或者说：“调度器，你应该这么做”，而不是：“调度器，你必须这么做”。
 */
public class PriorityThread {
    public static void main(String[] args) {
        Runnable task=()->{
            for (int i=0;i<5;i++){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        };

        Thread t1 = new Thread(task);
        Thread t2 = new Thread(task);
        t1.setPriority(Thread.MAX_PRIORITY);
        t2.setPriority(Thread.MIN_PRIORITY);
        t1.start();
        t2.start();
    }
}
